package cn.tedu.api;
// 测试  泛型
import java.util.ArrayList;
import java.util.List;

public class Test1_Generics {
    public static void main(String[] args) {
        //TODO 1泛型想要达到的目的：：：向数组学习----同一数组类型 + 编译期就报错
        //TODO 2 泛型 配合集合使用
//         集合比数组好：数据的类型丰富 + 长度可变
        List list = new ArrayList();
        list.add(1.1);
        list.add("2");
        list.add(3);
        list.add(true);
        list.add('中');
        System.out.println(list);//[1.1, 2, 3, true, 中]
        //TODO 3 约束集合中元素的类型---泛型--<??>---??是数据的类型---不能是基本类型，必须是引用类型

        List<String> list2 = new ArrayList<>();
        list2.add("tony");
//        list2.add(20);//TODO 4  泛型可以检查集合中元素的类型，如果不对，编译期就报错。
//        list2.add('果');//报错，不是String类型，没有通过泛型的类型检查
        List<Integer> list3 = new ArrayList<>();
        //200是Integer类型？---不是，是int类型，如何通过泛型的检查了呢？----自动装箱
        list3.add(200);
        //自动装箱 ，相当于底层完成了list3.add(Integer.valueOf(200))
        Integer a=Integer.valueOf(10);
        list3.add(a);
        System.out.println(list3);


    }
}
